--[[
工具
--]] -- 出征颜色点
local goOutColors = {
    0x43C0E9, {49, 4, 0xEC7677}, {27, 17, 0x33505A}, {27, 56, 0xD5A05F},
    {27, 70, 0xE2DFC1}, {52, 75, 0x776248}
}

local goOutOthers = {95, 861, 435, 948, 538}

-- 清缴颜色点
local clearColors = {
    0xBC9486, {29, 6, 0x0E6598}, {14, 25, 0xEAC5A2}, {30, 52, 0xFFF4D3},
    {50, 27, 0xF9E688}
}

local clearOthers = {95, 845, 149, 924, 230}

-- 战斗返回颜色点
local fightExitColors = {
    0xD5B75B, {16, 16, 0xE5F5AC}, {32, 1, 0xDAB15B}, {20, 23, 0xAB8C66},
    {20, -19, 0xAD6C57}
}

local fightExitOthers = {95, 8, 5, 62, 68}

-- 战斗结束颜色点
local fightOverColors = {
    0xEB5056, {89, 1, 0xEF595E}, {11, 25, 0xBF3B52}, {103, 27, 0xA42D49},
    {61, 12, 0xE3C4C2}
}

local fightOverOthers = {95, 525, 466, 668, 505}

math.randomseed(os.time())

util = {}

-- 出征
function util.goOut() util.operate("出征", goOutColors, goOutOthers) end

-- 清缴
function util.clear() util.operate("清缴", clearColors, clearOthers) end

-- 刷金币
function util.refreshCash()
    util.click(432, 189)
    logcat("金币")
    -- 选择哪个级别的清缴
    sleep(1000)
    util.click(860, 380)
    sleep(4000)
    util.fight()
end

-- 刷材料
function util.refreshMaterial()
    util.click(432, 88)
    logcat("材料")
    -- 选择哪个级别的清缴
    sleep(1000)
    util.click(860, 380)
    sleep(4000)
    util.fight()
end

-- 刷声望
function util.refreshPrestige()
    util.click(430, 292)
    logcat("声望")
    -- 选择哪个级别的清缴
    sleep(1000)
    util.click(857, 131)
    sleep(4000)
    util.fight()
end

-- 战斗包括退出战斗
function util.fight()
    local t, x, y = util.findColors(fightExitColors, fightExitOthers)
    if t then
        logcat("战斗")
    else
        error("无法进入战斗")
    end
    sleep(2000)
    -- 开始战斗
    util.click(486, 405)
    sleep(2000)
    -- 自动战斗
    util.click(51, 507)
    logcat("自动战斗")
    while true do
        local b, i, j = util.findColors(fightOverColors, fightOverOthers)
        if b then
            x = i
            y = j
            break
        end
        logcat("战斗中")
        sleep(3000)
    end
    sleep(1000)
    util.click(x, y)
    logcat("退出战斗")
end

function util.exit()
    util.click(47, 17)
    logcat("返回")
end

function util.operate(action, colors, others)
    local isFound, x, y = util.findColors(colors, others)
    if (isFound) then
        util.click(x, y)
        logcat(action)
    else
        error(action .. "失败")
    end
end

function util.findColors(colors, others)
    local isFound, x, y, tb = find.colors(colors, others[1], others[2],
                                          others[3], others[4], others[5])
    return isFound, x, y
end

-- 单次点击
function util.click(x, y)
    touch.down(x, y)
    sleep(math.random(200, 300))
    touch.up()
end

function util.goHome()
    util.click(888, 58)
    logcat("回城")
end

return util
